모의해킹
호스트기반모의해킹_30_리눅스 후속 공격
작성자 : Heehyeon Yoo|2025-12-11
# 모의해킹# Post-Exploitation# Lateral Movement# Linux# Information Gathering
1. 후속 공격(Post-Exploitation) 개요
초기 침투(Initial Access) 성공 후, 장악한 호스트를 거점(Beachhead)으로 삼아 수행하는 모든 활동을 말한다.
단순히 호스트 하나를 해킹하는 것에서 끝나는 것이 아니라, 내부망 이동(Lateral Movement), 권한 상승, 지속성 유지, 중요 정보(Crown Jewels) 탈취가 최종 목표다.
1.1 핵심 수행 원칙
- 은밀함(Stealthy Approach - "Living off the Land"):
- 보안 관제(SecOps)나 EDR을 피하기 위해
nmap,sqlmap같은 시끄러운 도구 사용을 지양한다. - 시스템에 이미 설치된 기본 명령어(
grep,find,netstat등)를 조합하여 조용히 정보를 수집해야 한다.
- 보안 관제(SecOps)나 EDR을 피하기 위해
- 목표 지향(Goal-Oriented):
- "일단 다 털어보자"가 아니라, "C서버 장악을 위해 B호스트의 계정 정보가 필요하다"는 식의 명확한 목표를 가지고 움직여야 한다.
- 시나리오:
Host A(Web)장악 ->Host B접근 권한 획득 ->Host C(DB)최종 장악.
- 디폴트(Default) vs 변경 사항(Modified):
- 갓 설치된 OS(순정 상태)와 현재 상태의 차이점을 찾아야 한다.
- 관리자가 추가한 사용자, 설치한 SW, 변경한 설정 파일 등이 곧 취약점이다.
2. 리눅스 정보 수집(Information Gathering)
"나는 누구인가? 어디에 있는가? 무엇이 있는가?"를 파악하여 권한 상승 및 내부망 이동의 열쇠가 될 단서를 찾는다.
2.1 사용자 식별(Identify User)
- 기본 정보:
whoami: 현재 사용자명 확인.id: UID, GID 확인.uid=0(root): 최고 관리자.uid=1000~: 일반 사용자(실제 사람이 사용하는 계정일 확률 높음).uid=1~999: 시스템/서비스 계정(Login Shell이 없는 경우가 많음).
- 권한 확인(Privilege Check):
sudo -l: (★중요) 현재 사용자가NOPASSWD(비밀번호 없이)로 루트 권한 실행 가능한 명령어가 있는지 확인.(예:vim,cp등).groups [user]: 사용자가 속한 그룹 확인(예:docker그룹은 사실상 root 권한과 다름없음).
- SSH 키 권한 확인:
ls -alh /home/*/.ssh/- Tip: 만약 다른 사용자(예:
sqladmin)의.ssh디렉토리나id_rsa(Private Key) 파일에 대해 쓰기(Write) 또는 읽기(Read) 권한이 있다면, 해당 사용자로 SSH 접속이 가능하다.
2.2 시스템 및 네트워크 정보(System & Network)
- 시스템 정보:
hostname: 호스트 이름 식별(서버 용도 추측).cat /etc/os-release: OS 배포판 및 버전 확인.uname -a: 커널 버전 확인(DirtyCOW 등 Kernel Exploit 가능성).
- 네트워크 정보:
ip addr/ifconfig: IP 주소 및 네트워크 대역 확인.route -n: 라우팅 테이블. 다중 인터페이스(NIC)가 있다면 내부망 연결 통로일 수 있다.arp -a: ARP 테이블. 현재 통신 중인 이웃 호스트(Neighbors) 식별 -> 내부망 이동 타겟.
- 포트 및 서비스:
ss -tlpn또는netstat -antup: Listening Port 확인.- Tip:
127.0.0.1(Localhost)에서만 리스닝 중인 포트(예: 3306 MySQL, 8080 Admin Console)는 외부에서 접근이 불가능하므로, 내부에서만 공략 가능하다.
2.3 파일 및 프로세스(Files & Processes)
- 프로세스:
ps -ef --forest: 프로세스 트리 확인. 어떤 서비스가 누구 권한으로 실행 중인지 파악.
- 설치된 소프트웨어:
dpkg -l: 패키지 매니저 설치 목록./opt/디렉토리:- 관리자가 수동으로 설치(Manual Install)한 서드파티 소프트웨어가 주로 위치한다.
- 자동 보안 업데이트가 되지 않아 취약한 구버전일 확률이 매우 높다.
- 중요 설정 파일:
find /etc -name "*.conf" 2>/dev/null: 설정 파일 전수 조사.- DB 접속 정보(ID/PW)가 하드코딩된 경우가 많다.
- 로그 파일:
/var/log/: 시스템 로그, 인증 로그(auth.log) 등에서 다른 사용자의 흔적을 찾는다.~/.bash_history: 사용자가 실수로 입력한 비밀번호나 접속 명령어가 남아있을 수 있다.
2.4 취약한 권한 찾기(Permissions)
- SUID 파일:
find / -perm -4000 -type f 2>/dev/null- SUID(Set User ID): 실행 시 파일 소유자(주로 Root)의 권한으로 실행되는 파일. 잘 알려진 GTFOBins 바이너리에 SUID가 걸려 있다면 즉시 루트 권한 획득 가능.
- 777 권한 파일(World Writable):
find / -perm -0077 -type f 2>/dev/null- 예:
/etc/passwd파일이 777이라면, 공격자가 새로운 루트 사용자 라인을 추가하여 시스템을 장악할 수 있다.
2.5 환경 변수 및 가상화(Env & Containers)
- 환경 변수:
env또는export명령어.AWS_ACCESS_KEY,DB_PASSWORD등 민감 정보가 환경 변수로 노출되는 경우가 많다.
- 컨테이너 여부 확인(Jail/Docker):
cat /proc/self/cgroupls -la /.dockerenv- 호스트 자체가 컨테이너라면, 호스트 OS로 탈출(Escape)하거나 다른 컨테이너로 이동해야 한다.